import request from '@/utils/request'

/**
 * 获取学生的课程列表
 * @param {Object} params 查询参数对象
 * @returns {Promise} 请求结果
 */
export function getStudentCourses(params = {}) {
  // 确保参数是正确的基本类型，而不是嵌套对象
  const { page = 1, size = 10, keyword = '', subject = '', level = '', type = 'student' } = params
  
  return request({
    url: '/api/courses/list',
    method: 'get',
    params: { 
      page, 
      size, 
      keyword,
      subject,
      level,
      type
    }
  })
}

/**
 * 获取课程详情
 * @param {Number} id 课程ID
 * @returns {Promise} 请求结果
 */
export function getCourseById(id) {
  return request({
    url: `/api/courses/${id}`,
    method: 'get'
  })
}

/**
 * 获取课程章节列表
 * @param {Number} courseId 课程ID
 * @returns {Promise} 请求结果
 */
export function getCourseChapters(courseId) {
  return request({
    url: `/api/courses/${courseId}/chapters`,
    method: 'get'
  })
}

/**
 * 获取推荐课程
 * @param {Number} limit 数量限制
 * @returns {Promise} 请求结果
 */
export function getRecommendCourses(limit = 4) {
  return request({
    url: '/api/courses/recommend',
    method: 'get',
    params: { limit }
  })
}

/**
 * 搜索课程
 * @param {String} keyword 搜索关键词
 * @param {Number} page 页码
 * @param {Number} size 每页数量
 * @returns {Promise} 请求结果
 */
export function searchCourses(keyword, page = 1, size = 10) {
  return request({
    url: '/api/courses/list',
    method: 'get',
    params: { keyword, page, size }
  })
}

/**
 * 加入课程
 * @param {Number} courseId 课程ID
 * @returns {Promise} 请求结果
 */
export function joinCourse(courseId) {
  return request({
    url: '/api/courses/join',
    method: 'post',
    data: { courseId }
  })
} 